"""
请实现一个函数，用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样，那么它是对称的。
例如，二叉树 [1,2,2,3,4,4,3] 是对称的。
    1
   / \
  2   2
 / \ / \
3  4 4  3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
    1
   / \
  2   2
   \   \
   3    3
示例 1：
输入：root = [1,2,2,3,4,4,3]
输出：true
示例 2：
输入：root = [1,2,2,null,3,null,3]
输出：false
"""
'''
解题思路 #
递归遍历左右子树， 然后判断当前
节点的左右子节点。如果可以直接判
断的情况，则跳出递归，直接返回结
果。如果无法直接判断结果
，则递归检测左右子树的外侧节
点是否相等，同理再递归检测左右
子树的内侧节点是否相等。


'''
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        if not root:
            return True
        return self.check(root.left,root.right)
    def check(self,left:TreeNode,right:TreeNode):
        if not left and not right:
            return True
        elif not left and right:
            return False
        elif left and not right:
            return False
        elif left.val != right.val:
            return False
        return self.check(left.left,right.righta) and self.check(left.right,right.left)